import requests
from bs4 import BeautifulSoup


# # url必须以http或者https打头
# url = 'http://www.baidu.com'
# re = requests.get(url, timeout=10)
# # 属性和方法
# # 属性：status ode  200  获取网页成功
# print(re.status_code)
# # encoding
# print(re.encoding)
# re.encoding = 'utf-8'
# print(re.text)
# # raise_for _status

def getHtml(url):
    try:
        re = requests.get(url, timeout=10)
        re.raise_for_status()
        re.encoding = 'utf-8'
        print('获取成功')
        return re.text
    except:
        print('获取失败')
        return ''


def getHtmlData(html):
    soup = BeautifulSoup(html, 'html.parser')
    # 属性: head
    print(soup.head)
    # title
    print(soup.title)
    # body
    print(soup.body)
    # P
    print(soup.p)
    print(soup.a)
    # strings
    print(soup.p.strings)
    for str in soup.p.strings:
        print(str)

    # 方法  find()或find_all()
    print(soup.p.name)
    print(soup.p.attrs)
    print(soup.p.string)

    # 由于HTML语法可以在标签中嵌套其他标签，所以  string属性的返回值遵循如下规则：
    # 如果标签内部没有其他标签，string属性返回其中的内容；
    # 如果标签内有其他标签，但只有一个标签，string属性返回最里面标签的内容；
    # 如果标签内有超过一层嵌套的标签，string属性返回None（空字符串）。
    print(soup.title.string)

    # find   find_all

    print(soup.find_all('p'))
    print(soup.find_all())

def main():
    url = 'http://www.baidu.com'
    html = getHtml(url)
    getHtmlData(html)


if __name__ == '__main__':
    main()
